'use strict'

const { Controller } = require('egg')

class HomeController extends Controller {
  // 获取告警动作列表
  async index() {
    const { ctx, service } = this
    await ctx.isLogin()
    ctx.body = await service.action.list()
  }

  // 创建告警动作
  async create() {
    const { ctx, service } = this
    await ctx.isLogin()
    ctx.body = await service.action.create()
  }

  // 显示单个
  async show() {
    const { ctx, service } = this
    await ctx.isLogin()
    ctx.body = await service.action.show()
  }

  // 更新告警动作
  async update() {
    const { ctx, service } = this
    await ctx.validateId()
    const stream = await service.action.update()
    if (!stream) {
      ctx.throw(404, 'not found', '告警动作不存在')
    }
    ctx.body = stream
  }

  // 删除告警动作
  async destroy() {
    const { ctx, service } = this
    await ctx.isLogin()
    await ctx.validateId()
    const action = await ctx.model.Action.findById(ctx.params.id)
    if (!action) {
      ctx.throw(404, 'not found', '对象不存在')
    }
    if (action.user.toString() !== ctx.user._id.toString() && !ctx.user.isAdmin) {
      ctx.throw(403, 'not permission', '无权删除')
    }
    ctx.body = await action.remove()
  }
}

module.exports = HomeController
